package algorithm.t202112;

import java.util.PriorityQueue;

/**
 * @author : 李红磊
 * @version :1.0
 * @date : 2021/12/24 16:26
 * @description :2道
 * 已经将近一周没有安心做题了，昨天公司那边也通知了，估计得要1月中下旬才能入职，这样看来今年过年是不能回家过了。明天就是考研的日子了，希望老刘能考一个好
 * 成绩，再回头看看高考，已经3年多了，不知道自己在这3年中成长了多少。疫情让计划不得不做出改变，现在就是利用这空闲的时间，多刷一些题，为了能进大厂做铺垫，
 * 要和篮子拉开差距需要的一成不变的坚持。
 * persevere to last
 * 2021.12.24
 * 李红磊
 * 2021年12月24日21:02:55
 */
public class t20211224 {

    //1705.吃苹果的最大数目
    public int eatenApples(int[] apples, int[] days) {
        PriorityQueue<int[]> queue = new PriorityQueue<>((a, b) -> a[0] - b[0]);
        int ans = 0, n = apples.length, time = 0;

        while (!queue.isEmpty() || time < n) {
            if (time < n && apples[time] > 0) queue.add(new int[]{time + days[time] - 1, apples[time]});

            while (!queue.isEmpty() && queue.peek()[0] < time) queue.poll();

            if (!queue.isEmpty()) {
                int[] cur = queue.poll();
                if (--cur[1] > 0 && time > cur[0]) queue.add(cur);
                ans++;
            }
            time++;
        }
        return ans;
    }

    //522.最长特殊序列
    private boolean isSubSequence(String x, String y) {
        //判断x是否为y的子序列
        int j = 0;
        for (int i = 0; i < y.length() && j < x.length(); i++) {
            if (y.charAt(i) == x.charAt(j)) j++;
        }
        return j == x.length();
    }

    public int findLUSlength(String[] strs) {
        int ans = -1;


        for (int i = 0, j; i < strs.length; i++) {
            for (j = 0; j < strs.length; j++) {
                if (i == j) continue;
                if (isSubSequence(strs[i], strs[j])) break;
            }
            if (j == strs.length) ans = Math.max(ans, strs[i].length());


        }
        return ans;

    }


    public static void main(String[] args) {
        System.out.println(1 << 3);


    }

}
